gusucode.com > 黑色西装服饰类网站源码 工作服装量身定制网站织梦模板(demo359)源码程序 > 黑色西装服饰类网站源码 工作服装量身定制网站织梦模板(demo359)源码程序/www2/style/js/superfish.js

    /*






 * Superfish v1.4.8 - jQuery menu widget






 * Copyright (c) 2008 Joel Birch






 *






 * Dual licensed under the MIT and GPL licenses:






 * 	http://www.opensource.org/licenses/mit-license.php






 * 	http://www.gnu.org/licenses/gpl.html






 *  http://www.yaoyingying.com/css/jquery/superfish/#getting-started  [china]






 *






 * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt






 */













;(function($){






	$.fn.superfish = function(op){













		var sf = $.fn.superfish,






			c = sf.c,






			$arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),






			over = function(){






				var $$ = $(this), menu = getMenu($$);






				clearTimeout(menu.sfTimer);






				$$.showSuperfishUl().siblings().hideSuperfishUl();






			},






			out = function(){






				var $$ = $(this), menu = getMenu($$), o = sf.op;






				clearTimeout(menu.sfTimer);






				menu.sfTimer=setTimeout(function(){






					o.retainPath=($.inArray($$[0],o.$path)>-1);






					$$.hideSuperfishUl();






					if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}






				},o.delay);	






			},






			getMenu = function($menu){






				var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];






				sf.op = sf.o[menu.serial];






				return menu;






			},






			addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };






			






		return this.each(function() {






			var s = this.serial = sf.o.length;






			var o = $.extend({},sf.defaults,op);






			o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){






				$(this).addClass([o.hoverClass,c.bcClass].join(' '))






					.filter('li:has(ul)').removeClass(o.pathClass);






			});






			sf.o[s] = sf.op = o;






			






			$('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {






				if (o.autoArrows) addArrow( $('>a:first-child',this) );






			})






			.not('.'+c.bcClass)






				.hideSuperfishUl();






			






			var $a = $('a',this);






			$a.each(function(i){






				var $li = $a.eq(i).parents('li');






				$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});






			});






			o.onInit.call(this);






			






		}).each(function() {






			var menuClasses = [c.menuClass];






			if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);






			$(this).addClass(menuClasses.join(' '));






		});






	};













	var sf = $.fn.superfish;






	sf.o = [];






	sf.op = {};






	sf.IE7fix = function(){






		var o = sf.op;






		if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)






			this.toggleClass(sf.c.shadowClass+'-off');






		};






	sf.c = {






		bcClass     : 'sf-breadcrumb',






		menuClass   : 'sf-js-enabled',






		anchorClass : 'sf-with-ul',






		arrowClass  : 'sf-sub-indicator',






		shadowClass : 'sf-shadow'






	};






	sf.defaults = {






		hoverClass	: 'sfHover',






		pathClass	: 'overideThisToUse',






		pathLevels	: 1,






		delay		: 350,






		animation	: {opacity:'show'},






		speed		: 'normal',






		autoArrows	: true,






		dropShadows : true,






		disableHI	: false,		// true disables hoverIntent detection






		onInit		: function(){}, // callback functions






		onBeforeShow: function(){},






		onShow		: function(){},






		onHide		: function(){}






	};






	$.fn.extend({






		hideSuperfishUl : function(){






			var o = sf.op,






				not = (o.retainPath===true) ? o.$path : '';






			o.retainPath = false;






			var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)






					.find('>ul').hide().css('visibility','hidden');






			o.onHide.call($ul);






			return this;






		},






		showSuperfishUl : function(){






			var o = sf.op,






				sh = sf.c.shadowClass+'-off',






				$ul = this.addClass(o.hoverClass)






					.find('>ul:hidden').css('visibility','visible');






			sf.IE7fix.call($ul);






			o.onBeforeShow.call($ul);






			$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });






			return this;






		}






	});













})(jQuery);